﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using VisaApp.Models;
using Visa.Common.MvcContronller;
using Visa.Service;
using VisaApp.Helper;
using Visa.DB;
using Visa.Service.Export;
using System.Configuration;
using System.Net.Mail;
using Visa.Common.SecurityJson;
using System.Web.Security;
using Visa.Common.Membership;

namespace VisaApp.Controllers
{
    public class QuantriController : UTController
    {
        private UTAuthenticationService authenticationService = new UTAuthenticationService();
        private VisaService VisaSer = new VisaService();
        private QuocGiaService ChaulucSer = new QuocGiaService();
        private ExportEmail exPort = new ExportEmail();
        private ThongtinhuuService thongtinhuuichSv = new ThongtinhuuService();
        private NewsService NewsSer = new NewsService();
        private StringHelpers adminHelper = new StringHelpers();
        private TopicService TopicSer = new TopicService();
        private EmailSensSev EmailHethogSv = new EmailSensSev();
        private HotrotructuyenService hotrotructuyenSv = new HotrotructuyenService();
        private YkienkhachanhService YkienSv = new YkienkhachanhService();
        private CauhoiService cauhoiSv = new CauhoiService();
        private EmailHelper EmailSv = new EmailHelper();
        private TuyendungService TuyenDungDv = new TuyendungService();
        private DownloadService DownloadSv = new DownloadService();
        private QuangcaoService QuangcaoSv = new QuangcaoService();
        private EncryptPass mahoa = new EncryptPass();
        private UserService userSer = new UserService();
        private RolesSer rolS = new RolesSer();
        private EmailResgeditSv Emailres = new EmailResgeditSv();
        private MenuService MenuServices = new MenuService();

        private int PageSize = 20;
        //
        // GET: /Quantri/

        [Authorize]
        public ActionResult Index()
        {
            return View();
        }

        [Authorize]
        public ActionResult MenuPage()
        {
            try
            {
                var c = rolS.checkUserIRoles(UtContext.User.UsID, "Adminstrator");
                if (c) ViewBag.checkUser = 1;
                else ViewBag.checkUser = 2;
            }
            catch {  }
            return PartialView("_MenuPage");
        }

        #region Đăng nhập

        public ActionResult Dangnhap()
        {
            UserModel model = new UserModel();
            return View("Dangnhap", model);
        }

        [HttpPost]
        public ActionResult Dangnhap(UserModel model)
        {

            if (string.IsNullOrEmpty(model.UserName))
            {
                return JsonError("Vui lòng nhập tên đăng nhập");
            }

            if (string.IsNullOrEmpty(model.UserPass))
            {
                return JsonError("Vui lòng nhập mật khẩu");
            }

            string Passs = mahoa.Encrypt(model.UserPass, "manhlan3013", true);

            if (!userSer.CheckUserLogin(model.UserName, Passs))
            {
                return JsonError("Tài khoản này , không có trong hệ thống của chúng tôi");
            }

            var g = userSer.GetUserByEmilAndUsName(true, model.UserName);

            bool loginStatus = Membership.ValidateUser(model.UserName, Passs);
            if (loginStatus)
            {
                if (UtContext.User != null)
                {
                    Session.RemoveAll();
                    authenticationService.LogOut();
                }

                authenticationService.LogIn(model.UserName);
                return JsonSuccess(Url.Action("Index"), null);
            }
            else
            {
                return JsonError("Tài khoản này , không có trong hệ thống của chúng tôi");
            }


        }

        #endregion

        public ActionResult Logout()
        {
            Session.RemoveAll();
            authenticationService.LogOut();
            UTContext ut = new UTContext();
            ut.LogOut();
            ut = null;
            return RedirectToAction("Dangnhap");
        }

         [Authorize]
        public ActionResult IndexUserAdmin()
        {
            var c = new List<Role>();
            c.Add(new Role { RoleID = -1, Name = "All" });

            var gh = rolS.GetAllRoles();

            if (c.Count() > 0)
            {
                foreach (var g in gh)
                {
                    c.Add(g);
                }
            }
            ViewData["ListRoles"] = new SelectList(c, "RoleID", "Name");
            return View();
        }

        #region User

        [HttpGet]
        [Authorize]
        public ActionResult GetListUser(int RolesId)
        {
            List<UserModel> model = new List<UserModel>();
            var entity = userSer.GetALlUserInRoles(RolesId);
            entity.ForEach(delegate(User tt)
            {
                UserModel ml = new UserModel()
                {
                    UsID = tt.UsID,
                    UserPass = mahoa.Decrypt(tt.UserPass, "manhlan3013", true),
                    UserFullName = tt.UserFullName,
                    DateCreate = tt.DateCreate,
                };
                model.Add(ml);
            });
            return PartialView("_GetListUser",model);
        }

         [Authorize]
        [HttpGet]
        public ActionResult EditUserAdmin(int UserID)
        {
            UserModel model = new UserModel();
            var c = userSer.GetRolesById(UserID);
            UserModel.MapForm(c, ref model);
            model.UserPass = mahoa.Decrypt(model.UserPass, "manhlan3013", true);

            var gh = rolS.GetAllRoles().ToList();

            model.ModelCheck = new List<MoreInfoAdmin>();
            if (gh.Count() > 0)
            {
                foreach (var item in gh)
                {
                    MoreInfoAdmin itemCheck = new MoreInfoAdmin()
                    {
                        Id = item.RoleID,
                        Name = item.Name,
                        Checkbox = rolS.checkExitsRolesiD(c.UsID, item.RoleID),
                    };

                    model.ModelCheck.Add(itemCheck);
                }
            }


            return PartialView("_EditUserAdmin", model);
        }

         [Authorize]
        [HttpPost]
        public ActionResult EditEditUserAdmin(UserModel model)
        {
            if (string.IsNullOrEmpty(model.UserFullName))
            {
                return JsonError("Vui lòng nhập họ và tên của bạn");
            }

            if (!string.IsNullOrEmpty(model.EmailChange))
            {
                string mahoaEmail = model.EmailChange;
                if (userSer.checkUserByEmail(mahoaEmail))
                {
                    return JsonError("Email đã tồn tại vui lòng nhập email khác");
                }
                else
                {
                    model.UserEmail = model.EmailChange;
                }
            }

            if (!string.IsNullOrEmpty(model.NameAddUser))
            {
                string mahoUserName = model.NameAddUser;
                if (userSer.checkUserByUserName(mahoUserName))
                {
                    return JsonError("Tên đăng nhập đã tồn tại vui lòng nhập Tên đăng nhập khác");
                }
                else
                {
                    model.UserName = model.NameAddUser;
                }
            }

            if (!string.IsNullOrEmpty(model.PassNews))
            {
                model.UserPass = model.PassNews;
            }

            model.UserPass = mahoa.Encrypt(model.UserPass, "manhlan3013", true);

            User u = new User();
            UserModel.MapFrom(model, ref u);
            userSer.UpdateRoles(u);

            foreach (var g in model.ModelCheck)
            {
                if (g.Checkbox == true)
                {
                    if (!rolS.checkExitsRolesiD(model.UsID, g.Id))
                    {
                        rolS.AddUserInrolesID(model.UsID, g.Id);
                    }
                }
                else
                {
                    if (rolS.checkExitsRolesiD(model.UsID, g.Id))
                    {
                        rolS.removeRolesInUsser(model.UsID, g.Id);
                    }
                }
            }
            return JsonSuccess(Url.Action("IndexUserAdmin"));
        }
         [Authorize]
        [HttpGet]
        public ActionResult AddUserAdmin()
        {
            UserModel model = new UserModel();

            var gh = rolS.GetAllRoles().ToList();

            model.ModelCheck = new List<MoreInfoAdmin>();
            if (gh.Count() > 0)
            {
                foreach (var item in gh)
                {
                    MoreInfoAdmin itemCheck = new MoreInfoAdmin()
                    {
                        Id = item.RoleID,
                        Name = item.Name,
                        Checkbox = false
                    };

                    model.ModelCheck.Add(itemCheck);
                }
            }

            return PartialView("_AddUserAdmin", model);
        }

         [Authorize]
        [HttpPost]
        public ActionResult AddUserAdmin(UserModel model)
        {
            if (string.IsNullOrEmpty(model.UserFullName))
            {
                return JsonError("Vui lòng nhập họ và tên của bạn");
            }

            if (string.IsNullOrEmpty(model.UserEmail))
            {
                return JsonError("Vui lòng nhập Email");
            }

            if (string.IsNullOrEmpty(model.UserName))
            {
                return JsonError("Vui lòng nhập tên đăng nhập");
            }

            if (string.IsNullOrEmpty(model.UserPass))
            {
                return JsonError("Vui lòng nhập mật khẩu");
            }

            model.UserPass = mahoa.Encrypt(model.UserPass, "manhlan3013", true);

            if (userSer.checkUserByEmail(model.UserEmail))
            {
                return JsonError("Email đã tồn tại vui lòng nhập email khác");
            }

            if (userSer.checkUserByUserName(model.UserName))
            {
                return JsonError("Tên đăng nhập đã tồn tại vui lòng nhập Tên đăng nhập khác");
            }

            User u = new User();
            model.DateCreate = DateTime.Now;
            model.Deleted = false;
            model.LastLogin = DateTime.Now;
            model.IsEmail = true;
            model.Birthday = DateTime.Now;
            model.Madel = true;
            model.Phone = "0909090909";
            UserModel.MapFrom(model, ref u);
            var us = userSer.InsertRoles(u);

            foreach (var g in model.ModelCheck)
            {
                if (g.Checkbox == true)
                {
                    rolS.AddUserInrolesID(us.UsID, g.Id);
                }
            }
            return JsonSuccess(Url.Action("IndexUserAdmin"));
        }

         [Authorize]
        [HttpGet]
        public ActionResult DeteleUser(int id)
        {
            userSer.DeleteUserByID(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }

         [Authorize]
        [HttpGet]
        public ActionResult InfoCaNhan()
        {
            UserModel model = new UserModel();
            var c = userSer.GetRolesById(UtContext.User.UsID);
            UserModel.MapForm(c, ref model);
            model.UserPass = mahoa.Decrypt(model.UserPass, "manhlan3013", true);
            return PartialView("InfoCaNhan", model);
        }
         [Authorize]
        [HttpPost]
        public ActionResult EditEditCaNhan(UserModel model)
        {
            if (string.IsNullOrEmpty(model.UserFullName))
            {
                return JsonError("Vui lòng nhập họ và tên của bạn");
            }

            if (!string.IsNullOrEmpty(model.EmailChange))
            {
                string mahoaEmail = model.EmailChange;
                if (userSer.checkUserByEmail(mahoaEmail))
                {
                    return JsonError("Email đã tồn tại vui lòng nhập email khác");
                }
                else
                {
                    model.UserEmail = model.EmailChange;
                }
            }

            if (!string.IsNullOrEmpty(model.NameAddUser))
            {
                string mahoUserName = model.NameAddUser;
                if (userSer.checkUserByUserName(mahoUserName))
                {
                    return JsonError("Tên đăng nhập đã tồn tại vui lòng nhập Tên đăng nhập khác");
                }
                else
                {
                    model.UserName = model.NameAddUser;
                }
            }

            if (!string.IsNullOrEmpty(model.PassNews))
            {
                model.UserPass = model.PassNews;
            }

            model.UserPass = mahoa.Encrypt(model.UserPass, "manhlan3013", true);

            User u = new User();
            UserModel.MapFrom(model, ref u);
            u.IsActive = true;
            userSer.UpdateRoles(u);

            return JsonSuccess(null, "Cập nhập thành công");
        }

        #endregion

        #region Tư Vấn Nhanh

         [Authorize]
        public ActionResult IndexTuVanNhanh()
        {
            return View();
        }
         [Authorize]
        public ActionResult IndexTuVanNhanhOnUser()
        {
            return View();
        }
         [Authorize]
        public ActionResult ListTuVanNhanh(bool type, int page)
        {
            List<VisaResModel> model = new List<VisaResModel>();
            var c = VisaSer.GetAllVisaRes().Where( o => o.Type == type).ToList();

            if (c.Count() > 0)
            {
                string tts = string.Empty;
                foreach (var g in c)
                {
                    if (g.Status == true)
                    {
                        tts = "Đã gởi email phải hồi";
                    }
                    else
                    {
                        tts = "Chưa gởi email phản hồi";
                    }

                    var ml = new VisaResModel();
                    ml.Id = g.Id;
                    ml.HoTen = g.HoTen;
                    ml.Dt = g.Dt;
                    ml.Email = g.Email;
                    ml.visadencacnuoc = g.visadencacnuoc;
                    ml.TrangThaiXem = tts;
                    ml.DateCreate = g.DateCreate;
                    ml.Status = g.Status;
                    ml.Type = ml.Type;
                    model.Add(ml);
                }
            }

            var ListNewsPageSize = new PagedData<VisaResModel>();

            if (model.Count() > 0)
            {
                ListNewsPageSize.Data = model.Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                ListNewsPageSize.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)model.Count() / PageSize));
                ListNewsPageSize.CurrentPage = page;
            }
            else
            {
                ListNewsPageSize.Data = null;
                ListNewsPageSize.NumberOfPages = 0;
                ListNewsPageSize.CurrentPage = 0;
            }
            ViewBag.type = type;

            if (type) ViewBag.codeT = 1;
            else ViewBag.codeT = 2;

            return PartialView("_ListTuVanNhanh", ListNewsPageSize);
        }
         [Authorize]
        public ActionResult AddTuVanNhanh(bool type)
        {
            VisaResModel model = new VisaResModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = false;
            model.Type = type;
            return PartialView("_AddTuVanNhanh", model);
        }

         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult AddTuVanNhanh(VisaResModel model)
        {
            if (string.IsNullOrEmpty(model.visadencacnuoc))
            {
                return JsonError(" Vui lòng chọn ít nhất 1 nước mà bạn cần tư vấn ");
            }
            if (model.visadencacnuoc == "Chọn Quốc gia")
            {
                return JsonError(" Vui lòng chọn ít nhất 1 nước mà bạn cần tư vấn ");
            }
            if (string.IsNullOrEmpty(model.HoTen))
            {
                return JsonError(" Vui lòng nhập họ và tên của bạn vào");
            }

            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập email của bạn vào ");
            }

            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError("Email bạn nhập vào sai cú pháp ");
            }

            if (string.IsNullOrEmpty(model.Dt))
            {
                return JsonError(" Vui lòng nhập số điện thoại di dộng hoặc nhà của bạn vào ");
            }

            if (!IsNumber(model.Dt))
            {
                return JsonError(" Số điện thoại phải là số , không có ký tự trắng hoặc chữ ");
            }

            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Vui lòng nhập nội dung vào ");
            }

            model.Type = true;
            VisaRe visaentity = new VisaRe();
            VisaResModel.MapFrom(model, ref visaentity);
            VisaSer.addOrUpdateVisa(visaentity);

            return JsonSuccess(Url.Action("IndexTuVanNhanhOnUser"));
        }

         [Authorize]
        public ActionResult EditTuVanNhanh(int id)
        {
            VisaResModel model = new VisaResModel();
            var c = VisaSer.GetVisaById(id);
            VisaResModel.MapFrom(c, ref model);
            return PartialView("_EditTuVanNhanh", model);
        }

         [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult EdiTuVanNhanh(VisaResModel model)
        {

            if (string.IsNullOrEmpty(model.visadencacnuoc))
            {
                return JsonError(" Vui lòng chọn ít nhất 1 nước mà bạn cần tư vấn ");
            }
            if (model.visadencacnuoc == "Chọn Quốc gia")
            {
                return JsonError(" Vui lòng chọn ít nhất 1 nước mà bạn cần tư vấn ");
            }
            if (string.IsNullOrEmpty(model.HoTen))
            {
                return JsonError(" Vui lòng nhập họ và tên của bạn vào");
            }

            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập email của bạn vào ");
            }

            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError("Email bạn nhập vào sai cú pháp ");
            }

            if (string.IsNullOrEmpty(model.Dt))
            {
                return JsonError(" Vui lòng nhập số điện thoại di dộng hoặc nhà của bạn vào ");
            }

            if (!IsNumber(model.Dt))
            {
                return JsonError(" Số điện thoại phải là số , không có ký tự trắng hoặc chữ ");
            }

            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Vui lòng nhập nội dung vào ");
            }

            VisaRe visaentity = new VisaRe();
            VisaResModel.MapFrom(model, ref visaentity);
            visaentity.Status = false;
            VisaSer.addOrUpdateVisa(visaentity);

            if (model.Type == false)
            {
                return JsonSuccess(Url.Action("IndexTuVanNhanh"));
            }
            else
            {
                return JsonSuccess(Url.Action("IndexTuVanNhanhOnUser"));
            }
        }

         [Authorize]
        public ActionResult DeleteTuVanNhanh(int id)
        {
            VisaSer.DeleteVisa(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }

         [Authorize]
        public ActionResult XuatTuVanNhanhExcel(bool type)
        {
            try
            {
                var listVisa = VisaSer.GetAllVisaRes().Where(o => o.Type == type).ToList();

                var fileName = string.Format("danhsachtuvanvisa_{0}.xlsx", DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss"));
                string filePath = System.IO.Path.Combine(Request.PhysicalApplicationPath, "Content\\files\\ExportImport", fileName);
                exPort.ExportProductsToXlsx(filePath,listVisa);
                var bytes = System.IO.File.ReadAllBytes(filePath);
                return File(bytes, "text/xls", fileName);
            }
            catch (Exception exc)
            {
                return RedirectToAction("IndexTuVanNhanh");
            }

        }

         [Authorize]
        public ActionResult SendMailTuVan(bool type, int id)
        {
            var listEmail = EmailHethogSv.GetAllNews();
            ViewData["listEmaiil"] = new SelectList(listEmail, "Id", "Email");
            SendMailModel model = new SendMailModel();
            var c = VisaSer.GetVisaById(id);
            model.VisaInfo = new VisaResModel();
            VisaResModel ml = new VisaResModel();
            VisaResModel.MapFrom(c, ref ml);
            model.VisaInfo = ml;
            model.EmailSendId = 0;
            model.VisaInfo.Type = type;
            return PartialView("_SendMailTuVan",model);
        }

         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult SendMailTuVan(SendMailModel model)
        {
            if (model.EmailSendId == 0)
            {
                return JsonError("Vui lòng chọn Email bạn cần gởi đi ");
            }
            if (string.IsNullOrEmpty(model.Tieude))
            {
                return JsonError("Vui lòng Nhập tiêu đề mail ");
            }
            if (string.IsNullOrEmpty(model.Noidung))
            {
                return JsonError(" Vui lòng nhập nội dung tư vấn ");
            }

            var c = EmailHethogSv.GetById(model.EmailSendId);
            string smtp  = string.Empty;
            int port = 0;
            if (c.type == true)
            {
                smtp = ConfigurationManager.AppSettings["HostGoogle"].ToString();
                port = int.Parse(ConfigurationManager.AppSettings["PortGoogle"].ToString());
                
            }
            else
            {
                smtp = ConfigurationManager.AppSettings["HostYahoo"].ToString();
                port = int.Parse(ConfigurationManager.AppSettings["PortYahoo"].ToString());

            }

            List<MailAddress> ListBcc = new List<MailAddress>();
            if (!string.IsNullOrEmpty(model.bcc))
            {
                if (!IsValidEmailAddress(model.bcc))
                {
                    return JsonError(" Email bcc sai định dạng ");
                }

                MailAddress ml = new MailAddress(model.bcc);
                ListBcc.Add(ml);
            }

            EmailSv.EmailTemple(port, model.Noidung, c, model.VisaInfo.Email, smtp, model.Tieude, ListBcc, string.Empty, string.Empty);
            VisaSer.UpdateStatus(model.VisaInfo.Id);

            if (model.VisaInfo.Type == false)
            {
                return JsonSuccess(Url.Action("IndexTuVanNhanh"));
            }
            else
            {
                return JsonSuccess(Url.Action("IndexTuVanNhanhOnUser"));
            }
        }
       
        #endregion

        #region Châu Lục

         [Authorize]
        public ActionResult IndexChauLuc()
        {
            return View();
        }
         [Authorize]
        public ActionResult ListChauLuc()
        {
            List<ChauLucModel> model = new List<ChauLucModel>();
            var c = ChaulucSer.GetListChauLuc();

            if (c.Count() > 0)
            {
                foreach (var g in c)
                {
                    var ml = new ChauLucModel();
                    ml.Id = g.Id;
                    ml.Name = g.Name;
                    ml.regioncode = g.regioncode;
                    ml.DateCreate = g.DateCreate;
                    ml.Status = g.Status;
                    model.Add(ml);
                }
            }

            return PartialView("_ListChauLuc",model);
        }
         [Authorize]
        public ActionResult AddChauLuc()
        {
            ChauLucModel model = new ChauLucModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = true;
            return PartialView("_AddChauLuc", model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult AddChauLuc(ChauLucModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tên châu lục");
            }

            if (string.IsNullOrEmpty(model.regioncode))
            {
                return JsonError(" Vui lòng nhập mã code châu lục");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }
            if (string.IsNullOrEmpty(model.clat))
            {
                return JsonError(" Vui lòng nhập địa chỉ clat");
            }

            if (string.IsNullOrEmpty(model.clong))
            {
                return JsonError(" Vui lòng nhập địa chỉ clong");
            }

            ChauLuc entity = new ChauLuc();
            ChauLucModel.MapFrom(model, ref entity);
            ChaulucSer.AddOrUpdateChauLuc(entity);

            return JsonSuccess(Url.Action("IndexChauLuc"));
        }
         [Authorize]
        public ActionResult EditChauLuc(int id)
        {
            ChauLucModel model = new ChauLucModel();
            var c = ChaulucSer.getChauLucById(id);
            ChauLucModel.MapFrom(c, ref model);
            return PartialView("_EditChauLuc", model);
        }
         [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult EditChauLuc(ChauLucModel model)
        {

            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tên châu lục");
            }

            if (string.IsNullOrEmpty(model.regioncode))
            {
                return JsonError(" Vui lòng nhập mã code châu lục");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }
            if (string.IsNullOrEmpty(model.clat))
            {
                return JsonError(" Vui lòng nhập địa chỉ clat");
            }

            if (string.IsNullOrEmpty(model.clong))
            {
                return JsonError(" Vui lòng nhập địa chỉ clong");
            }

            ChauLuc entity = new ChauLuc();
            ChauLucModel.MapFrom(model, ref entity);
            ChaulucSer.AddOrUpdateChauLuc(entity);

            return JsonSuccess(Url.Action("IndexChauLuc"));
        }
         [Authorize]
        public ActionResult DeleteChauLuc(int id)
        {
            ChaulucSer.DeleteChauLuc(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }

        #endregion

        #region Quốc Gia
         [Authorize]
        public ActionResult IndexQuocGia()
        {
            return View();
        }
         [Authorize]
        public ActionResult ListQuocGia(int page, int RejonCode)
        {
            string CodeByGet = string.Empty;
            if (RejonCode != 100)
            {
                if (RejonCode.ToString().Length == 1)
                {
                    CodeByGet = "00" + RejonCode.ToString();
                }
                else if (RejonCode.ToString().Length == 2)
                {
                    CodeByGet = "0" + RejonCode.ToString();
                }
                else
                {
                    CodeByGet = RejonCode.ToString();
                }
            }

            List<QuocGiaModel> model = new List<QuocGiaModel>();
            var c = ChaulucSer.GetListQuocGia(CodeByGet);

            if (c.Count() > 0)
            {
                foreach (var g in c)
                {
                    var ml = new QuocGiaModel();
                    ml.Id = g.Id;
                    ml.Name = g.Name;
                    ml.countrycode = g.countrycode;
                    ml.DateCreate = g.DateCreate;
                    ml.Status = g.Status;
                    model.Add(ml);
                }
            }

            var ListNewsPageSize = new PagedData<QuocGiaModel>();

            if (model.Count() > 0)
            {
                ListNewsPageSize.Data = model.Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                ListNewsPageSize.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)model.Count() / PageSize));
                ListNewsPageSize.CurrentPage = page;
            }
            else
            {
                ListNewsPageSize.Data = null;
                ListNewsPageSize.NumberOfPages = 0;
                ListNewsPageSize.CurrentPage = 0;
            }

            return PartialView("_ListQuocGia", ListNewsPageSize);
        }
         [Authorize]
        public ActionResult AddQuocGia()
        {
            QuocGiaModel model = new QuocGiaModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = true;
            model.regioncode = "100";
            return PartialView("_AddQuocGia", model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult AddQuocGia(QuocGiaModel model)
        {
            if (model.regioncode == "100")
            {
                return JsonError(" Vui lòng chọn châu lục");
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tên châu lục");
            }

            if (string.IsNullOrEmpty(model.countrycode))
            {
                return JsonError(" Vui lòng chọn châu lục");
            }

            if (string.IsNullOrEmpty(model.regioncode))
            {
                return JsonError(" Vui lòng nhập mã code châu lục");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }

            QuocGia entity = new QuocGia();
            QuocGiaModel.MapFrom(model, ref entity);
            ChaulucSer.AddOrUpdateQuocGia(entity);

            return JsonSuccess(Url.Action("IndexQuocGia"));
        }
         [Authorize]
        public ActionResult EditQuocGia(int id)
        {
            QuocGiaModel model = new QuocGiaModel();
            var c = ChaulucSer.getQuocGiaById(id);
            QuocGiaModel.MapFrom(c, ref model);
            return PartialView("_EditQuocGia", model);
        }
         [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult EditQuocGia(QuocGiaModel model)
        {
            if (model.regioncode == "100")
            {
                return JsonError(" Vui lòng chọn châu lục");
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tên châu lục");
            }

            if (string.IsNullOrEmpty(model.countrycode))
            {
                return JsonError(" Vui lòng chọn châu lục");
            }

            if (string.IsNullOrEmpty(model.regioncode))
            {
                return JsonError(" Vui lòng nhập mã code châu lục");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }


            QuocGia entity = new QuocGia();
            QuocGiaModel.MapFrom(model, ref entity);
            ChaulucSer.AddOrUpdateQuocGia(entity);

            return JsonSuccess(Url.Action("IndexQuocGia"));
        }
         [Authorize]
        public ActionResult DeleteQuocgia(int id)
        {
            ChaulucSer.DeleteQuuocGia(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }

        #endregion

        #region Thông tin hữu ích

         [Authorize]
        public ActionResult Indexthongtinhuuich()
        {
            return View();
        }
         [Authorize]
        public ActionResult Listthongtinhuuich(int page, int ID)
        {
            List<ThongtinhuuichModel> model = new List<ThongtinhuuichModel>();
            var c = thongtinhuuichSv.GetAllThongtinhuichByQuocGiaID(ID);

            if (c.Count() > 0)
            {
                foreach (var g in c)
                {
                    var cQg = ChaulucSer.getQuocGiaById(g.QuocGia.Value);
                    var ml = new ThongtinhuuichModel();
                    ml.Id = g.Id;
                    ml.Name = g.Name;
                    try
                    {
                        ml.quocgiaName = cQg.Name;
                    }
                    catch { ml.quocgiaName = "error"; }
                    ml.DateCreate = g.DateCreate;
                    ml.Status = g.Status;
                    model.Add(ml);
                }
            }

            var ListNewsPageSize = new PagedData<ThongtinhuuichModel>();

            if (model.Count() > 0)
            {
                ListNewsPageSize.Data = model.Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                ListNewsPageSize.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)model.Count() / PageSize));
                ListNewsPageSize.CurrentPage = page;
            }
            else
            {
                ListNewsPageSize.Data = null;
                ListNewsPageSize.NumberOfPages = 0;
                ListNewsPageSize.CurrentPage = 0;
            }

            return PartialView("_Listthongtinhuuich", ListNewsPageSize);
        }
         [Authorize]
        public ActionResult Addthongtinhuuich()
        {
            ThongtinhuuichModel model = new ThongtinhuuichModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = true;
            model.QuocGia = 0;
            return View("_Addthongtinhuuich", model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult Addthongtinhuuich(ThongtinhuuichModel model)
        {

            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tiêu đề");
            }

            if (model.QuocGia == 0)
            {
                return JsonError(" Vui lòng chọn quốc gia");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }

            if (string.IsNullOrEmpty(model.DescritpionFull))
            {
                return JsonError(" Vui lòng nhập nội dung");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }

            Thongtinhuuich entity = new Thongtinhuuich();
            ThongtinhuuichModel.MapFrom(model, ref entity);
            thongtinhuuichSv.addOrUpdateVisa(entity);

            return JsonSuccess(Url.Action("Indexthongtinhuuich"));
        }
         [Authorize]
        public ActionResult Editthongtinhuuich(int id)
        {
            ThongtinhuuichModel model = new ThongtinhuuichModel();
            var c = thongtinhuuichSv.GetThongtinhuichById(id);
            ThongtinhuuichModel.MapFrom(c, ref model);
            var cKv = ChaulucSer.getQuocGiaById(c.QuocGia.Value);
            model.khuvucCode = cKv.regioncode;
            model.quocgiaName = cKv.Name;
            return PartialView("_Editthongtinhuuich", model);
        }
         [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult Editthongtinhuuich(ThongtinhuuichModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tiêu đề");
            }

            if (model.QuocGia == 0)
            {
                return JsonError(" Vui lòng chọn quốc gia");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }

            if (string.IsNullOrEmpty(model.DescritpionFull))
            {
                return JsonError(" Vui lòng nhập nội dung");
            }

            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Vui lòng nhập mô tả");
            }

            Thongtinhuuich entity = new Thongtinhuuich();
            ThongtinhuuichModel.MapFrom(model, ref entity);
            thongtinhuuichSv.addOrUpdateVisa(entity);

            return JsonSuccess(Url.Action("Indexthongtinhuuich"));
        }
         [Authorize]
        public ActionResult Deletethongtinhuuich(int id)
        {
            thongtinhuuichSv.DeleteThongtinhuich(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }

        #endregion

        #region Tin Tức
        [Authorize]
        public ActionResult IndexNews()
        {
            return View();
        }
        [Authorize]
        [HttpGet]
        public ActionResult ListNews(int page)
        {
            List<News> categories = new List<News>();
            categories = NewsSer.GetAllNews().ToList();

            List<NewsModel> model = new List<NewsModel>();
            if (categories != null)
            {
                categories.ForEach(delegate(News tt)
                {
                    string tts = string.Empty;
                    if (tt.Status == true)
                        tts = "View";
                    else
                        tts = "hide";

                    NewsModel ml = new NewsModel()
                    {
                        Name = tt.Name,
                        Id = tt.Id,
                        Images = tt.Images,
                        Trangthai = tts,
                        DateCreate = tt.DateCreate,
                        ALowHome = tt.ALowHome,
                    };
                    model.Add(ml);
                });
            }

            var ListNewsPageSize = new PagedData<NewsModel>();

            if (model.Count() > 0)
            {
                ListNewsPageSize.Data = model.Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                ListNewsPageSize.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)model.Count() / PageSize));
                ListNewsPageSize.CurrentPage = page;
            }
            else
            {
                ListNewsPageSize.Data = null;
                ListNewsPageSize.NumberOfPages = 0;
                ListNewsPageSize.CurrentPage = 0;
            }
            return PartialView("_ListNews", ListNewsPageSize);
        }
        [Authorize]
        public ActionResult _AddNews()
        {
            var model = new NewsModel();
            model.Id = -1;
            model.Deleted = false;
            model.Status = true;
            model.ALowHome = true;
            return View(model);
        }
        [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _AddNews(NewsModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Điền tiêu đề tin vào");
            }
            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Điền mô tả ngắn vào");
            }
            if (string.IsNullOrEmpty(model.DescriptFull))
            {
                return JsonError(" Điền nội dung vào");
            }
            if (string.IsNullOrEmpty(model.Images))
            {
                return JsonError(" Chọn ảnh cho tin");
            }
            News News = new News();
            model.SearchName = adminHelper.RemoveSign4VietnameseString(model.Name);
            model.DateCreate = DateTime.Now;
            model.Deleted = false;
            model.IntView = 0;
            if (string.IsNullOrEmpty(model.MetaDescription))
            {
                model.MetaDescription = model.Description;
            }
            if (string.IsNullOrEmpty(model.MetaKeywords))
            {
                model.MetaKeywords = model.SearchName;
            }
            if (string.IsNullOrEmpty(model.MetaTitle))
            {
                model.MetaTitle = model.Name;
            }
            NewsModel.MapForm(model, ref News);
            NewsSer.addOrUpdateNews(News);
            return JsonSuccess(Url.Action("IndexNews"));

        }
        [Authorize]
        public ActionResult _EditNews(int id)
        {
            News news = NewsSer.GetNewsById(id);
            var model = new NewsModel();
            NewsModel.MapForm(news, ref model);
            return View(model);
        }
        [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _EditNews(NewsModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Điền tiêu đề tin vào");
            }
            if (string.IsNullOrEmpty(model.Description))
            {
                return JsonError(" Điền mô tả ngắn vào");
            }
            if (string.IsNullOrEmpty(model.DescriptFull))
            {
                return JsonError(" Điền nội dung vào");
            }
            if (string.IsNullOrEmpty(model.Images))
            {
                return JsonError(" Chọn ảnh cho tin");
            }

            News News = new News();
            model.SearchName = adminHelper.RemoveSign4VietnameseString(model.Name);
            model.LayoutID = 0;
            model.Deleted = false;
            if (string.IsNullOrEmpty(model.MetaDescription))
            {
                model.MetaDescription = model.Description;
            }
            if (string.IsNullOrEmpty(model.MetaKeywords))
            {
                model.MetaKeywords = model.SearchName;
            }
            if (string.IsNullOrEmpty(model.MetaTitle))
            {
                model.MetaTitle = model.Name;
            }
            NewsModel.MapForm(model, ref News);
            NewsSer.addOrUpdateNews(News);

            return JsonSuccess(Url.Action("IndexNews"));

        }
        [Authorize]
        [HttpGet]
        public ActionResult DeteleNews(int id)
        {
            NewsSer.DeleteNews(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }

        #endregion

        #region Topic
        [Authorize]

        public ActionResult IndexTopicPage()
        {
            return View();
        }
        [Authorize]
        [HttpGet]
        public ActionResult GetListTopic()
        {
            List<Topic> topics = new List<Topic>();
            topics = TopicSer.GetAllNews().OrderByDescending(o => o.DateCreate).ToList();
            List<TopicModel> model = new List<TopicModel>();
            if (topics != null)
            {
                topics.ForEach(delegate(Topic tt)
                {
                    string tts = string.Empty;
                    if (tt.Status == true)
                        tts = "View";
                    else
                        tts = "hide";

                    TopicModel ml = new TopicModel()
                    {
                        Name = tt.Name,
                        Id = tt.Id,
                        DateCreate = tt.DateCreate,
                        Seession_Code = tt.Seession_Code
                    };
                    model.Add(ml);
                });
            }
            return PartialView("_GetListTopic", model);
        }
        [Authorize]
        public ActionResult _AddTopicPage()
        {
            var model = new TopicModel();
            model.Status = true;
            return View(model);
        }
        [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult CreateTopicPage(TopicModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Điền tên Topic");
            }
            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Điền Nội dung");
            }
            if (string.IsNullOrEmpty(model.Seession_Code))
            {
                return JsonError(" Điền mã code");
            }

            Topic Topics = new Topic();
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Id = -1;
            TopicModel.MapFrom(model, ref Topics);
            TopicSer.addOrUpdateNews(Topics);
            return JsonSuccess(Url.Action("IndexTopicPage"));
        }
        [Authorize]
        public ActionResult _EditTopicPage(int id)
        {
            Topic Topics = new Topic();
            Topics = TopicSer.GetNewsById(id);
            var model = new TopicModel();
            TopicModel.MapFrom(Topics, ref model);
            return View(model);
        }
        [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _EditTopicPage(TopicModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Điền tên Topic");
            }
            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Điền Nội dung");
            }
            if (string.IsNullOrEmpty(model.Seession_Code))
            {
                return JsonError(" Điền mã code");
            }

            Topic Topics = new Topic();
            TopicModel.MapFrom(model, ref Topics);
            TopicSer.addOrUpdateNews(Topics);
            return JsonSuccess(Url.Action("IndexTopicPage"));
        }
        [Authorize]
        [HttpGet]
        public ActionResult DeteleTopicPage(int id)
        {
            TopicSer.DeleteNews(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }


        #endregion

        #region ý kiến khách hàng
        [Authorize]
        public ActionResult IndexYKienkhachhang()
        {
            return View();
        }
        [Authorize]
        public ActionResult ListYKienkhachhang()
        {
            List<YkienkhachhangModel> model = new List<YkienkhachhangModel>();
            var c = YkienSv.GetAll();

            if (c.Count() > 0)
            {
                foreach (var g in c)
                {
                    var ml = new YkienkhachhangModel();
                    ml.Id = g.Id;
                    ml.title = g.title;
                    ml.Name = g.Name;
                    ml.DateCreate = g.DateCreate;
                    ml.Status = g.Status;
                    ml.UserName = g.UserName;
                    model.Add(ml);
                }
            }

            return PartialView("_ListYKienkhachhang", model);
        }
        [Authorize]
        public ActionResult AddYKienkhachhang()
        {
            YkienkhachhangModel model = new YkienkhachhangModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = true;
            return PartialView("_AddYKienkhachhang", model);
        }
        [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult AddYKienkhachhang(YkienkhachhangModel model)
        {
            if (string.IsNullOrEmpty(model.title))
            {
                return JsonError(" Vui lòng nhập tiêu đề ý kiến");
            }

            if (string.IsNullOrEmpty(model.UserName))
            {
                return JsonError(" Vui lòng nhập họ tên của bạn");
            }

            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập Email của bạn vào");
            }

            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError(" Email bạn nhập vào sai định dạng, vui lòng xem lại");
            }

            //if (yKienSv.checkEmail(model.Email))
            //{
            //    return JsonError(" Email này đã được đăng ký rùi");
            //}

            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Vui lòng nhập nội dung ý kiến vào");
            }


            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Id = -1;
            Ykienkhachang entity = new Ykienkhachang();
            YkienkhachhangModel.MapFrom(model, ref entity);
            YkienSv.addOrUpdateNews(entity);

            return JsonSuccess(Url.Action("IndexYKienkhachhang"));
        }
        [Authorize]
        public ActionResult EditYKienkhachhang(int id)
        {
            YkienkhachhangModel model = new YkienkhachhangModel();
            var c = YkienSv.GetById(id);
            YkienkhachhangModel.MapFrom(c, ref model);
            return PartialView("_EditYKienkhachhang", model);
        }
        [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult EditYKienkhachhang(YkienkhachhangModel model)
        {

            if (string.IsNullOrEmpty(model.title))
            {
                return JsonError(" Vui lòng nhập tiêu đề ý kiến");
            }

            if (string.IsNullOrEmpty(model.UserName))
            {
                return JsonError(" Vui lòng nhập họ tên của bạn");
            }

            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập Email của bạn vào");
            }

            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError(" Email bạn nhập vào sai định dạng, vui lòng xem lại");
            }

            //if (yKienSv.checkEmail(model.Email))
            //{
            //    return JsonError(" Email này đã được đăng ký rùi");
            //}

            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Vui lòng nhập nội dung ý kiến vào");
            }


            model.Detele = false;
            Ykienkhachang entity = new Ykienkhachang();
            YkienkhachhangModel.MapFrom(model, ref entity);
            YkienSv.addOrUpdateNews(entity);

            return JsonSuccess(Url.Action("IndexYKienkhachhang"));
        }
        [Authorize]
        public ActionResult DeleteYKienkhachhang(int id)
        {
            YkienSv.Delete(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }
        [Authorize]
        public ActionResult UpdateStatusYKienkhachhang(int id, bool stt)
        {
            YkienSv.addOrUpdateNewsStaus(id, stt);
            return Json(null, JsonRequestBehavior.AllowGet);
        }
        #endregion

        #region Câu hỏi thường gặp

        [Authorize]
        public ActionResult IndexCauhoithuonggap()
        {
            return View();
        }
        [Authorize]
        public ActionResult ListCauhoithuonggap()
        {
            List<CauhoiModel> model = new List<CauhoiModel>();
            var c = cauhoiSv.GetAll();

            if (c.Count() > 0)
            {
                foreach (var g in c)
                {
                    var ml = new CauhoiModel();
                    ml.Id = g.Id;
                    ml.Name = g.Name;
                    ml.regioncode = g.regioncode;
                    ml.DateCreate = g.DateCreate;
                    ml.Status = g.Status;
                    ml.Title = g.title;
                    ml.Answered = g.Answered;
                    model.Add(ml);
                }
            }

            return PartialView("_ListCauhoithuonggap", model);
        }
        [Authorize]
        public ActionResult AddCauhoithuonggap()
        {
            CauhoiModel model = new CauhoiModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = false;
            return PartialView("_AddCauhoithuonggap", model);
        }
        [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult AddCauhoithuonggap(CauhoiModel model)
        {
            if (string.IsNullOrEmpty(model.Title))
            {
                return JsonError(" Vui lòng nhập tiêu đề câu hỏi");
            }
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập họ tên của bạn vào");
            }
            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập Email của bạn vào");
            }
            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError(" Email bạn nhập vào sai định dạng, vui lòng xem lại");
            }
            if (string.IsNullOrEmpty(model.Noidung))
            {
                return JsonError("Vui lòng nhập nội dung vào của bạn vào");
            }

            model.DateCreate = DateTime.Now;
            model.Id = -1;
            Cauhoi entity = new Cauhoi();
            model.Detele = false;
            CauhoiModel.mapFrom(model, ref entity);
            cauhoiSv.addOrUpdateNews(entity);

            return JsonSuccess(Url.Action("IndexCauhoithuonggap"));
        }
        [Authorize]
        public ActionResult EditCauhoithuonggap(int id)
        {
            CauhoiModel model = new CauhoiModel();
            var c = cauhoiSv.GetById(id);
            CauhoiModel.mapFrom(c, ref model);
            return PartialView("_EditCauhoithuonggap", model);
        }
        [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult EditCauhoithuonggap(CauhoiModel model)
        {

            if (string.IsNullOrEmpty(model.Title))
            {
                return JsonError(" Vui lòng nhập tiêu đề câu hỏi");
            }
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập họ tên của bạn vào");
            }
            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập Email của bạn vào");
            }
            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError(" Email bạn nhập vào sai định dạng, vui lòng xem lại");
            }
            if (string.IsNullOrEmpty(model.Noidung))
            {
                return JsonError("Vui lòng nhập nội dung vào của bạn vào");
            }

            model.Detele = false;
            Cauhoi entity = new Cauhoi();
            CauhoiModel.mapFrom(model, ref entity);
            cauhoiSv.addOrUpdateNews(entity);

            return JsonSuccess(Url.Action("IndexCauhoithuonggap"));
        }
        [Authorize]
        public ActionResult DeleteCauhoithuonggap(int id)
        {
            cauhoiSv.Delete(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }

       [Authorize]
        public ActionResult SendAnswer(int id)
        {
            TraloiModel model = new TraloiModel();
            model.modelCauhoi = new CauhoiModel();
            CauhoiModel modelTl = new CauhoiModel();
            var c = cauhoiSv.GetById(id);
            var entoty = cauhoiSv.GetTraloiByCauhoiId(id);
            if (entoty != null)
            {
                model.DateCreate = DateTime.Now;
                model.Idtl = entoty.Id;
                model.Traloi1 = entoty.TraloiNoidung;
            }
            else
            {
                model.DateCreate = DateTime.Now ;
                model.Idtl = -1;

            }
            CauhoiModel.mapFrom(c, ref modelTl);
            model.modelCauhoi = modelTl;
            return PartialView("_SendAnswer", model);
        }
        [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult SendAnswer(TraloiModel model)
        {
            if (string.IsNullOrEmpty(model.Traloi1))
            {
                return JsonError(" vui lòng nhập câu trả lời");
            }


            Traloi entity = new Traloi();
            entity.Id = model.Idtl;
            entity.Name = "tra loi cau hoi " + model.modelCauhoi.Name;
            entity.TraloiNoidung = model.Traloi1;
            entity.DateCreate = model.DateCreate;
            entity.Detele = false;
            entity.Status = true;
            entity.UserID = 0;
            entity.CauhoiId = model.modelCauhoi.Id;
            cauhoiSv.addOrUpdateTraloi(entity);

            // update cau trả lời
            cauhoiSv.UpdateTraloi(model.modelCauhoi.Id);
            return JsonSuccess(Url.Action("IndexCauhoithuonggap"));
        }

        #endregion

        #region IndexEmailHeThong

         [Authorize]
        public ActionResult IndexEmailHeThong()
        {
            return View();
        }
         [Authorize]
        public ActionResult ListEmailHeThong()
        {
            List<EmailSenModel> model = new List<EmailSenModel>();
            var c = EmailHethogSv.GetAllNews();

            if (c.Count() > 0)
            {
                foreach (var g in c)
                {
                    var ml = new EmailSenModel();
                    ml.Id = g.Id;
                    ml.Email = g.Email;
                    ml.Pass = g.Pass;
                    ml.DateCreate = g.DateCreate;
                    ml.Status = g.Status;
                    ml.type = g.type;
                    model.Add(ml);
                }
            }
            return PartialView("_ListEmailHeThong", model);
        }

         [Authorize]
        public ActionResult AddEmailHeThong()
        {
            EmailSenModel model = new EmailSenModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Status = true;
            model.type = true;
            return PartialView("_AddEmailHeThong", model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult AddEmailHeThong(EmailSenModel model)
        {
            
            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập Email");
            }

            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError("Email sai định dạng");
            }

            if (string.IsNullOrEmpty(model.Pass))
            {
                return JsonError(" Vui lòng nhập pass");
            }

            model.DateCreate = DateTime.Now;
            EmailSend entity = new EmailSend();
            EmailSenModel.MapFrom(model, ref entity);
            EmailHethogSv.addOrUpdateNews(entity);
            return JsonSuccess(Url.Action("IndexEmailHeThong"));
        }
         [Authorize]
        public ActionResult EditEmailHeThong(int id)
        {
            EmailSenModel model = new EmailSenModel();
            var c = EmailHethogSv.GetById(id);
            EmailSenModel.MapFrom(c, ref model);
            return PartialView("_EditEmailHeThong", model);
        }
         [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult EditEmailHeThong(EmailSenModel model)
        {
            if (string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập Email");
            }

            if (!IsValidEmailAddress(model.Email))
            {
                return JsonError("Email sai định dạng");
            }

            if (string.IsNullOrEmpty(model.Pass))
            {
                return JsonError(" Vui lòng nhập pass");
            }
            EmailSend entity = new EmailSend();
            EmailSenModel.MapFrom(model, ref entity);
            EmailHethogSv.addOrUpdateNews(entity);
            return JsonSuccess(Url.Action("IndexEmailHeThong"));
        }
         [Authorize]
        public ActionResult DeleteEmailHeThong(int id)
        {
            EmailHethogSv.DeleteEmailSend(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }




        #endregion

        #region Hỗ trợ trực tuyến
         [Authorize]
        public ActionResult IndexHotrotructuyen()
        {
            return View();
        }
         [Authorize]
        public ActionResult ListHotrotructuyen()
        {
            List<HotrotructuyenModel> model = new List<HotrotructuyenModel>();
            var c = hotrotructuyenSv.GetAll();

            if (c.Count() > 0)
            {
                foreach (var g in c)
                {
                    var ml = new HotrotructuyenModel();
                    ml.Id = g.Id;
                    ml.Name = g.Name;
                    ml.Nick = g.Nick;
                    ml.NickYahoo = g.NickYahoo;
                    ml.DateCreate = g.DateCreate;
                    ml.Dt = g.Dt;
                    ml.Email = g.Email;
                    model.Add(ml);
                }
            }

            return PartialView("_ListHotrotructuyen", model);
        }
         [Authorize]
        public ActionResult AddHotrotructuyen()
        {
            HotrotructuyenModel model = new HotrotructuyenModel();
            model.Id = -1;
            model.DateCreate = DateTime.Now;
            model.Detele = false;
            model.Status = true;
            model.Type = true;
            return PartialView("_AddHotrotructuyen", model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult AddHotrotructuyen(HotrotructuyenModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tên người hỗ trợ");
            }

            if (string.IsNullOrEmpty(model.Nick) && string.IsNullOrEmpty(model.Dt) && string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập 1 trong cái trường nick hoặc điện thoại hoặc email");
            }

            model.DateCreate = DateTime.Now;
            model.Status = true;
            model.Detele = false;
            model.Type = true;
            Hotrotructuyem entity = new Hotrotructuyem();
            HotrotructuyenModel.Mapfrom(model, ref entity);
            hotrotructuyenSv.addOrUpdateNews(entity);

            return JsonSuccess(Url.Action("IndexHotrotructuyen"));
        }
         [Authorize]
        public ActionResult EditHotrotructuyen(int id)
        {
            HotrotructuyenModel model = new HotrotructuyenModel();
            var c = hotrotructuyenSv.GetById(id);
            HotrotructuyenModel.Mapfrom(c, ref model);
            return PartialView("_EditHotrotructuyen", model);
        }
         [Authorize]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult EditHotrotructuyen(HotrotructuyenModel model)
        {
            if (string.IsNullOrEmpty(model.Name))
            {
                return JsonError(" Vui lòng nhập tên người hỗ trợ");
            }

            if (string.IsNullOrEmpty(model.Nick) && string.IsNullOrEmpty(model.Dt) && string.IsNullOrEmpty(model.Email))
            {
                return JsonError(" Vui lòng nhập 1 trong cái trường nick hoặc điện thoại hoặc email");
            }

            model.Status = true;
            model.Detele = false;
            model.Type = true;
            Hotrotructuyem entity = new Hotrotructuyem();
            HotrotructuyenModel.Mapfrom(model, ref entity);
            hotrotructuyenSv.addOrUpdateNews(entity);
            return JsonSuccess(Url.Action("IndexHotrotructuyen"));
        }
         [Authorize]
        public ActionResult DeleteHotrotructuyen(int id)
        {
            hotrotructuyenSv.Delete(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }


        #endregion

        #region Tuyển Dụng

         [Authorize]
        public ActionResult IndexTuyenDung()
        {
            return View();
        }
         [Authorize]
        [HttpGet]
        public ActionResult ListTuyenDung()
        {
            List<TuyenDung> categories = new List<TuyenDung>();
            categories = TuyenDungDv.GetAllNews().ToList();

            List<TuyendungModel> model = new List<TuyendungModel>();
            if (categories != null)
            {
                categories.ForEach(delegate(TuyenDung tt)
                {
                    TuyendungModel ml = new TuyendungModel()
                    {
                        Title = tt.Title,
                        HanNop = tt.HanNop,
                        Soluong = tt.Soluong,
                        NgayTao = tt.NgayTao,
                        ID = tt.ID,
                    };
                    model.Add(ml);
                });
            }
            return PartialView("_ListTuyenDung", model);
        }

         [Authorize]
        public ActionResult _AddTuyenDung()
        {
            var model = new TuyendungModel();
            model.ID = -1;
            return View(model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _AddTuyenDung(TuyendungModel model)
        {
            if (string.IsNullOrEmpty(model.Title))
            {
                return JsonError(" Điền tiêu đề tuyển dụng vào");
            }

            try
            {
                if (!IsNumber(model.Soluong.ToString()))
                {
                    return JsonError(" nhập số lượng chỉ được là số va không được rỗng");
                }
            }
            catch { return JsonError(" nhập số lượng vào"); }

            if (string.IsNullOrEmpty(model.HanNop.ToString()))
            {
                return JsonError(" Chọn hạn nộp");
            }

            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Điền nội dung vào");
            }

           

            model.NgayTao = DateTime.Now;
            try
            {
                model.HanNop = DateTime.Parse(model.HanNop.ToString());
            }
            catch
            {
                model.HanNop = DateTime.Now.AddMonths(3);
            }


            TuyenDung News = new TuyenDung();
            TuyendungModel.MapFrom(model, ref News);
            TuyenDungDv.addOrUpdateNews(News);
            return JsonSuccess(Url.Action("IndexTuyenDung"));
        }
         [Authorize]
        public ActionResult _EditTuyenDung(int id)
        {
            TuyenDung news = TuyenDungDv.GetNewsById(id);
            var model = new TuyendungModel();
            TuyendungModel.MapFrom(news, ref model);
            return View(model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _EditTuyenDung(TuyendungModel model)
        {
            if (string.IsNullOrEmpty(model.Title))
            {
                return JsonError(" Điền tiêu đề tuyển dụng vào");
            }

            try
            {
                if (!IsNumber(model.Soluong.ToString()))
                {
                    return JsonError(" nhập số lượng chỉ được là số va không được rỗng");
                }
            }
            catch { return JsonError(" nhập số lượng vào"); }

            if (string.IsNullOrEmpty(model.HanNop.ToString()))
            {
                return JsonError(" Chọn hạn nộp");
            }

            if (string.IsNullOrEmpty(model.NoiDung))
            {
                return JsonError(" Điền nội dung vào");
            }

            
            try
            {
                model.HanNop = DateTime.Parse(model.HanNop.ToString());
            }
            catch
            {
                model.HanNop = DateTime.Now.AddMonths(3);
            }

            TuyenDung News = new TuyenDung();
            TuyendungModel.MapFrom(model, ref News);
            TuyenDungDv.addOrUpdateNews(News);

            return JsonSuccess(Url.Action("IndexTuyenDung"));

        }
         [Authorize]
        [HttpGet]
        public ActionResult DeteleTuyenDung(int id)
        {
            TuyenDungDv.DeleteNews(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }


        #endregion

        #region Thư viên
         [Authorize]
        public ActionResult IndexThuvien()
        {
            return View();
        }
         [Authorize]
        [HttpGet]
        public ActionResult ListThuvie()
        {
            List<Download> categories = new List<Download>();
            categories = DownloadSv.GetAllNews().ToList();

            List<DownloadModel> model = new List<DownloadModel>();
            if (categories != null)
            {
                categories.ForEach(delegate(Download tt)
                {
                    DownloadModel ml = new DownloadModel()
                    {
                        FileName = tt.FileName,
                        Id = tt.Id,
                        UrlFile = tt.UrlFile,
                        DateCreate = tt.DateCreate,
                    };
                    model.Add(ml);
                });
            }

            return PartialView("_ListThuvie", model);
        }
         [Authorize]
        public ActionResult _AddThuvie()
        {
            var model = new DownloadModel();
            model.DateCreate = DateTime.Now;
            model.Status = true;
            model.Id = -1;
            return PartialView(model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _AddThuvie(DownloadModel model)
        {
            if (string.IsNullOrEmpty(model.FileName))
            {
                return JsonError(" Điền tiêu đề file vào");
            }
            if (string.IsNullOrEmpty(model.UrlFile))
            {
                return JsonError(" Chọn file cho tin");
            }
            model.DateCreate = DateTime.Now;
            model.Status = true;
            model.CountDownload = 1;
            Download News = new Download();
            DownloadModel.MapFrom(model, ref News);
            DownloadSv.addOrUpdateNews(News);

            return JsonSuccess(Url.Action("IndexThuvien"));

        }
         [Authorize]
        public ActionResult _EditThuvie(int id)
        {
            Download news = DownloadSv.GetNewsById(id);
            var model = new DownloadModel();
            DownloadModel.MapFrom(news, ref model);
            return PartialView(model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _EditThuvie(DownloadModel model)
        {
            if (string.IsNullOrEmpty(model.FileName))
            {
                return JsonError(" Điền tiêu đề file vào");
            }
            if (string.IsNullOrEmpty(model.UrlFile))
            {
                return JsonError(" Chọn file cho tin");
            }
            Download News = new Download();
            DownloadModel.MapFrom(model, ref News);
            DownloadSv.addOrUpdateNews(News);

            return JsonSuccess(Url.Action("IndexThuvien"));

        }
         [Authorize]
        [HttpGet]
        public ActionResult DeteleThuvie(int id)
        {
            DownloadSv.DeleteNews(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }


        #endregion

        #region Quảng Banner
         [Authorize]
        public ActionResult IndexBanner()
        {
            return View();
        }
         [Authorize]
        [HttpGet]
        public ActionResult ListBanner()
        {
            List<Quangcao> categories = new List<Quangcao>();
            categories = QuangcaoSv.GetAllNews().ToList();

            List<QuangcaoModel> model = new List<QuangcaoModel>();
            if (categories != null)
            {
                categories.ForEach(delegate(Quangcao tt)
                {
                    QuangcaoModel ml = new QuangcaoModel()
                    {
                        Mota = tt.Mota,
                        Id = tt.Id,
                        Postition = tt.Postition,
                        Datecreate = tt.Datecreate,
                        DateEnd = tt.DateEnd,
                    };
                    model.Add(ml);
                });
            }

            return PartialView("_ListBanner", model);
        }
         [Authorize]
        public ActionResult _AddBanner()
        {
            var model = new QuangcaoModel();
            model.Datecreate = DateTime.Now;
            model.Status = true;
            model.Id = -1;
            model.Type = true;
            return PartialView(model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _AddBanner(QuangcaoModel model)
        {
            if (string.IsNullOrEmpty(model.Mota))
            {
                return JsonError(" Điền tiêu đề file vào");
            }
            if (string.IsNullOrEmpty(model.FileUrl))
            {
                return JsonError(" Chọn file cho tin");
            }
            try
            {
                model.DateEnd = DateTime.Parse(model.DateEnd.ToString());
            }
            catch
            {
                model.DateEnd = DateTime.Now.AddMonths(3);
            }

            model.Datecreate = DateTime.Now;
            model.Status = true;
            Quangcao News = new Quangcao();
            QuangcaoModel.MapFrom(model, ref News);
            QuangcaoSv.addOrUpdateNews(News);

            return JsonSuccess(Url.Action("IndexBanner"));

        }
         [Authorize]
        public ActionResult _EditBanner(int id)
        {
            Quangcao news = QuangcaoSv.GetNewsById(id);
            var model = new QuangcaoModel();
            QuangcaoModel.MapFrom(news, ref model);
            return PartialView(model);
        }
         [Authorize]
        [HttpPost]
        [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
        public ActionResult _EditBanner(QuangcaoModel model)
        {
            if (string.IsNullOrEmpty(model.Mota))
            {
                return JsonError(" Điền tiêu đề file vào");
            }
            if (string.IsNullOrEmpty(model.FileUrl))
            {
                return JsonError(" Chọn file cho tin");
            }
            try
            {
                model.DateEnd = DateTime.Parse(model.DateEnd.ToString());
            }
            catch
            {
                model.DateEnd = DateTime.Now.AddMonths(3);
            }
            model.Status = true;
            Quangcao News = new Quangcao();
            QuangcaoModel.MapFrom(model, ref News);
            QuangcaoSv.addOrUpdateNews(News);
            return JsonSuccess(Url.Action("IndexBanner"));

        }
         [Authorize]
        [HttpGet]
        public ActionResult DeteleBanner(int id)
        {
            QuangcaoSv.DeleteNews(id);
            return Json(null, JsonRequestBehavior.AllowGet);
        }


	    #endregion


        #region Email Quảng Cáo

         [Authorize]
        public ActionResult ListEmailSendAds()
        {
            SendMailModelPri model = new SendMailModelPri();

            model.ListModdel = new List<EmailQuangCao>();

            EmailQuangCao modelTuVanNhanhUser = new EmailQuangCao();

            modelTuVanNhanhUser.Id = 1;
            modelTuVanNhanhUser.Name = "Danh sách từ tư vấn nhanh";
            modelTuVanNhanhUser.TableID = 1;
            modelTuVanNhanhUser.Checkbox = true;

            EmailQuangCao modelTuVanNhanhAdin = new EmailQuangCao();
            modelTuVanNhanhAdin.Id = 2;
            modelTuVanNhanhAdin.Name = "Danh sách từ khách hàng nhập vào";
            modelTuVanNhanhAdin.TableID = 2;
            modelTuVanNhanhAdin.Checkbox = true;

            EmailQuangCao modelTDanhSachNguoiHoi = new EmailQuangCao();
            modelTDanhSachNguoiHoi.Id = 3;
            modelTDanhSachNguoiHoi.Name = "Danh sách từ khách hàng gởi câu hỏi";
            modelTDanhSachNguoiHoi.TableID = 3;
            modelTDanhSachNguoiHoi.Checkbox = true;

            EmailQuangCao modelTYkienKhachHang = new EmailQuangCao();
            modelTYkienKhachHang.Id = 4;
            modelTYkienKhachHang.Name = "Danh sách từ khách hàng gởi ý kiến";
            modelTYkienKhachHang.TableID = 4;
            modelTYkienKhachHang.Checkbox = true;

            EmailQuangCao modelDEmailDangky = new EmailQuangCao();
            modelDEmailDangky.Id = 5;
            modelDEmailDangky.Name = "Danh sách từ khách hàng Đăng ký Email";
            modelDEmailDangky.TableID = 5;
            modelDEmailDangky.Checkbox = true;

            model.ListModdel.Add(modelTuVanNhanhUser);
            model.ListModdel.Add(modelTuVanNhanhAdin);
            model.ListModdel.Add(modelTDanhSachNguoiHoi);
            model.ListModdel.Add(modelTYkienKhachHang);
            model.ListModdel.Add(modelDEmailDangky);

            var listEmail = EmailHethogSv.GetAllNews();
            ViewData["listEmaiilCode"] = new SelectList(listEmail, "Id", "Email");

            return PartialView("_ListEmailSendAds", model);
        }

         [Authorize]
        [HttpPost]
         public ActionResult ListEmailSendAds(SendMailModelPri model)
         {

             var checklistCate = model.ListModdel.Where(k => k.Checkbox == true).ToList();
             if (checklistCate.Count() == 0)
             {
                 return JsonError(" vui lòng chọn ít nhất 1 danh sách để gởi maiil");
             }

             if (model.EmailSendId == 0)
             {
                 return JsonError("Vui lòng chọn Email bạn cần gởi đi ");
             }
             if (string.IsNullOrEmpty(model.Tieude))
             {
                 return JsonError("Vui lòng Nhập tiêu đề mail ");
             }
             if (string.IsNullOrEmpty(model.Noidung))
             {
                 return JsonError(" Vui lòng nhập nội dung tư vấn ");
             }


             var c = EmailHethogSv.GetById(model.EmailSendId);
             string smtp = string.Empty;
             int port = 0;
             if (c.type == true)
             {
                 smtp = ConfigurationManager.AppSettings["HostGoogle"].ToString();
                 port = int.Parse(ConfigurationManager.AppSettings["PortGoogle"].ToString());

             }
             else
             {
                 smtp = ConfigurationManager.AppSettings["HostYahoo"].ToString();
                 port = int.Parse(ConfigurationManager.AppSettings["PortYahoo"].ToString());

             }

             List<MailAddress> ListBcc = new List<MailAddress>();

             foreach (var item in model.ListModdel)
             {
                 if (item.Checkbox == true)
                 {
                     if (item.Id == 1)
                     {
                         //Danh sách từ tư vấn nhanh
                         var entity = VisaSer.GetAllVisaRes().Where( k => k.Type == false).ToList();
                         foreach (var itemocde in entity)
                         {
                             try
                             {
                                 MailAddress mail = new MailAddress(itemocde.Email);
                                 ListBcc.Add(mail);
                             }
                             catch { }
                         }
                     }
                     else if (item.Id == 2)
                     {
                         //"Danh sách từ khách hàng nhập vào"
                         var entity = VisaSer.GetAllVisaRes().Where(k => k.Type == true).ToList(); ;
                         foreach (var itemocde in entity)
                         {
                             try
                             {
                                 MailAddress mail = new MailAddress(itemocde.Email);
                                 ListBcc.Add(mail);
                             }
                             catch { }
                         }
                     }
                     else if (item.Id == 3)
                     {
                         //"Danh sách từ khách hàng gởi câu hỏi"
                         var entity = cauhoiSv.GetAll().ToList(); ;
                         foreach (var itemocde in entity)
                         {
                             try
                             {
                                 MailAddress mail = new MailAddress(itemocde.Email);
                                 ListBcc.Add(mail);
                             }
                             catch { }
                         }
                     }
                     else if (item.Id == 4)
                     {
                         //"Danh sách từ khách hàng gởi ý kiến
                         var entity = YkienSv.GetAll().ToList(); ;
                         foreach (var itemocde in entity)
                         {
                             try
                             {
                                 MailAddress mail = new MailAddress(itemocde.Email);
                                 ListBcc.Add(mail);
                             }
                             catch { }
                         }
                     }
                     else if (item.Id == 5)
                     {
                         //"Danh sách từ khách hàng gởi đăng ký
                         var entity = Emailres.GetAllNews().ToList(); ;
                         foreach (var itemocde in entity)
                         {
                             try
                             {
                                 MailAddress mail = new MailAddress(itemocde.Email);
                                 ListBcc.Add(mail);
                             }
                             catch { }
                         }
                     }
                 }
             }

             EmailSv.EmailTemple(port, model.Noidung, c, c.Email, smtp, model.Tieude, ListBcc, string.Empty, string.Empty);


            return JsonSuccess(null, "Gởi Email Thành công");

         }

        #endregion


        #region Email Dang Ky

         [Authorize]
         public ActionResult IndexEmail()
         {
             return View();
         }

         [Authorize]
         public ActionResult ListEmail(int page)
         {
             string CodeByGet = string.Empty;
             List<EmailResModel> model = new List<EmailResModel>();
             var c = Emailres.GetAllNews();

             if (c.Count() > 0)
             {
                 foreach (var g in c)
                 {
                     var ml = new EmailResModel();
                     ml.id = g.id;
                     ml.Email = g.Email;
                     ml.DateCreate = g.DateCreate;
                     ml.Status = g.Status;
                     model.Add(ml);
                 }
             }

             var ListNewsPageSize = new PagedData<EmailResModel>();

             if (model.Count() > 0)
             {
                 ListNewsPageSize.Data = model.Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                 ListNewsPageSize.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)model.Count() / PageSize));
                 ListNewsPageSize.CurrentPage = page;
             }
             else
             {
                 ListNewsPageSize.Data = null;
                 ListNewsPageSize.NumberOfPages = 0;
                 ListNewsPageSize.CurrentPage = 0;
             }

             return PartialView("_ListEmail", ListNewsPageSize);
         }


         public ActionResult ExportExcel()
         {
             try
             {
                 var listVisa = Emailres.GetAllNews().ToList();

                 var fileName = string.Format("danhsachemaildangky_{0}.xlsx", DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss"));
                 string filePath = System.IO.Path.Combine(Request.PhysicalApplicationPath, "Content\\files\\ExportImport", fileName);
                 exPort.ExportEmailsToXlsx(filePath, listVisa);
                 var bytes = System.IO.File.ReadAllBytes(filePath);
                 return File(bytes, "text/xls", fileName);
             }
             catch (Exception exc)
             {
                 return RedirectToAction("IndexEmail");
             }
         }



        #endregion


        #region Menu Page


        #region Menutin


         #region Chuyên mục vé máy bay

        [Authorize]
         public ActionResult CateMenuIndex()
         {
             return View();
         }

        [Authorize]
         public ActionResult CateMenuList()
         {

             var listEntity = MenuServices.GetAllMenu();
             List<MenuTinModel> model = new List<MenuTinModel>();
             try
             {
                 foreach (var item in listEntity)
                 {
                     MenuTinModel ml = new MenuTinModel();
                     MenuTinModel.MapFrom(item, ref  ml);
                     model.Add(ml);
                 }
             }
             catch { }

             return PartialView("_CateMenuList", model);
         }

        [Authorize]
         public ActionResult AddMeuCate()
         {
             MenuTinModel model = new MenuTinModel();
             model.Id = 0;
             model.Datecreate = DateTime.Now;
             model.Active = true;
             model.ParentId = 1;
             model.AlowHome = true;
             return PartialView("_AddMeuCate", model);
         }

        [Authorize]
         public ActionResult UpdateMenuCate(int id)
         {
             MenuTinModel model = new MenuTinModel();
             var entity = MenuServices.GetMenuById(id);
             try
             {
                 MenuTinModel.MapFrom(entity, ref model);
             }
             catch { }

             return PartialView("_UpdateMenuCate", model);
         }

        [Authorize]
         [HttpPost]
         [ValidateInput(false)]
         public ActionResult AddOrUpdateMenuCate(MenuTinModel model)
         {

             try
             {
                 if (string.IsNullOrEmpty(model.Name))
                 {
                     return JsonError("Nhập tên menu vào");
                 }

                 try
                 {
                     if (!IsNumber(model.ParentId.Value.ToString()))
                     {
                         return JsonError("Vui lòng nhập thứ tự là số .");
                     }
                 }
                 catch { return JsonError("Vui lòng nhập thứ tự là số ."); } 


                 var entity = new MenuTin();
                 MenuTinModel.MapFrom(model, ref entity);
                 MenuServices.addOrUpdateMenu(entity);

                 return JsonSuccess(Url.Action("CateMenuIndex"), null);
             }
             catch (Exception ex)
             {
                 return JsonError(ex.ToString());
             }
         }

        [Authorize]
         public ActionResult DeletemenuCate(int id)
         {
             try
             {
                 MenuServices.DeleteMenu(id);
                 return JsonSuccess(Url.Action("CateMenuIndex"), null);
             }
             catch (Exception ex)
             {
                 return JsonError(ex.ToString());
             }
         }


         #endregion

         #region Vé chi tiết


         [Authorize]
         public ActionResult IndexTinOfMenu()
         {
             var c = new List<MenuTin>();
             var gh = MenuServices.GetAllMenu();

             if (gh.Count() > 0)
             {
                 foreach (var g in gh)
                 {
                     c.Add(g);
                 }
             }

             ViewData["Listmenu"] = new SelectList(c, "Id", "Name");

             return View();
         }

         [Authorize]
         [HttpGet]
         public ActionResult ListTinOfMenu(int cateId)
         {
             List<TinofMenu> categories = new List<TinofMenu>();
             categories = MenuServices.GetALlByCateMenuId(cateId);

             List<TinOfMenuModel> model = new List<TinOfMenuModel>();
             if (categories != null)
             {
                 categories.ForEach(delegate(TinofMenu tt)
                 {
                     TinOfMenuModel ml = new TinOfMenuModel()
                     {
                         Name = tt.Name,
                         Id = tt.Id,
                         Images = tt.Images,
                         Status = tt.Status,
                         DateCreate = tt.DateCreate,
                         ALowHome = tt.ALowHome,
                     };
                     model.Add(ml);
                 });
             }


             return PartialView("_ListTinOfMenu", model);
         }
         [Authorize]
         public ActionResult _AddTinOfMenu()
         {
             var model = new TinOfMenuModel();
             model.Id = 0;
             model.Deleted = false;
             model.Status = true;
             model.ALowHome = true;
             model.CateId = 0;

             var c = new List<MenuTin>();
             c.Add(new MenuTin { Id = 0, Name = "[Chọn menu" });
             var gh = MenuServices.GetAllMenu();

             if (gh.Count() > 0)
             {
                 foreach (var g in gh)
                 {
                     c.Add(g);
                 }
             }

             ViewData["ListmenuAdd"] = new SelectList(c, "Id", "Name");

             return View(model);
         }

         [Authorize]
         [HttpPost]
         [AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
         public ActionResult _AdduPDATETinOfMenu(TinOfMenuModel model)
         {
             if (model.CateId == 0)
             {
                 return JsonError(" Vui lòng chọn menu để add tin");
             }
             if (string.IsNullOrEmpty(model.Name))
             {
                 return JsonError(" Điền tiêu đề tin vào");
             }
             if (string.IsNullOrEmpty(model.Description))
             {
                 return JsonError(" Điền mô tả ngắn vào");
             }
             if (string.IsNullOrEmpty(model.DescriptFull))
             {
                 return JsonError(" Điền nội dung vào");
             }
             if (string.IsNullOrEmpty(model.Images))
             {
                 return JsonError(" Chọn ảnh cho tin");
             }
             TinofMenu News = new TinofMenu();
             model.SearchName = adminHelper.RemoveSign4VietnameseString(model.Name);
             model.DateCreate = DateTime.Now;
             model.Deleted = false;
             if (string.IsNullOrEmpty(model.MetaDescription))
             {
                 model.MetaDescription = model.Description;
             }
             if (string.IsNullOrEmpty(model.MetaKeywords))
             {
                 model.MetaKeywords = model.SearchName;
             }
             if (string.IsNullOrEmpty(model.MetaTitle))
             {
                 model.MetaTitle = model.Name;
             }
             TinOfMenuModel.MapForm(model, ref News);
             MenuServices.addOrUpdateTinOfMenu(News);
             return JsonSuccess(Url.Action("IndexTinOfMenu"));

         }

         [Authorize]
         public ActionResult _EditTinOfMenu(int id)
         {
             TinofMenu news = MenuServices.GetTinOfMenuById(id);
             var model = new TinOfMenuModel();
             TinOfMenuModel.MapForm(news, ref model);

             var c = new List<MenuTin>();
             var gh = MenuServices.GetAllMenu();

             if (gh.Count() > 0)
             {
                 foreach (var g in gh)
                 {
                     c.Add(g);
                 }
             }

             ViewData["ListmenuAdd"] = new SelectList(c, "Id", "Name", model.CateId);

             return View(model);
         }
         
         [Authorize]
         [HttpGet]
         public ActionResult DeteleTinOfMenu(int id)
         {
             MenuServices.DeleteMenu(id);
             return Json(null, JsonRequestBehavior.AllowGet);
         }



         #endregion


        #endregion

        #endregion
    }

    

}
